Tömb feltöltése véletlen számokkal és az elemek elrendezése terítő rendezéssel,
eljárások használatával (Terito.pas)
program Terito;
uses crt;
var i,j,n,m:integer;
a:array [1..50] of integer;
gyak:array [1..90] of integer;
procedure feltolt;
var i:integer;
begin
for i:=1 to n do begin
a[i]:=trunc(90*random)+1;
end;
end;
procedure kiir;
var i:integer;
begin
for i:=1 to n do begin
writeln(a[i]);
end;
end;
BEGIN
clrscr;
randomize;
n:=10;
feltolt;
writeln('A szamok rendezes elott:');
kiir;
for j:=1 to 90 do begin
Tömb rendezése terítő eljárással, úgy, hogy létrehozunk egy tömböt, mely elemeit kinullázzuk. Figyeljük meg, hogy a gyak tömb elemeinek száma megegyezik az a tömbben előforduló elemek maximális étrékével, azaz 90-el. A gyak tömbben az elemek gyakoriságát tároljuk el.
gyak[j]:=0;
end;
for i:=1 to n do begin
A ciklus segítségével feljegyezzük a gyak tömbbe az a tömbben előforduló értékeket, úgy, hogy a gyak tömb indexét beállítjuk az a tömb elemének értékére és a gyak tömb aktuális elemének értékét megnöveljük.
inc(gyak[a[i]]);
end;
i:=1;
for j:=1 to 90 do begin
Visszaadjuk az a tömbbe az értékeket.
while (gyak[j]>0) do begin
Végigmegyünk a gyak tömbbön és megvizsgáljuk, hogy az aktuális indexű elem értéke mennyi, mivel ez az előfordulás száma. Amekkora értékű, annyiszor helyezzük el az indexét az a tömbben. A ciklusban ezt az értéket csökkentjük, az a tömb indexét növeljük, így egymás után kerülnek az elemek tárolásra.
a[i]:=j;
inc(i);
dec(gyak[j]);
end;
end;
writeln('');
writeln('A szamok rendezes utan:');
kiir;
readkey;
END.
|